home *** CD-ROM | disk | FTP | other *** search
- #ifndef SYSTEM_EVENTS_H
- #define SYSTEM_EVENTS_H TRUE
-
- /*
- ** $VER: events.h V0.9B
- **
- ** (C) Copyright 1996-1997 DreamWorld Productions.
- ** All Rights Reserved.
- **
- */
-
- #ifndef DPKERNEL_H
- #include <dpkernel/dpkernel.h>
- #endif
-
- /*****************************************************************************
- ** The Event Node.
- */
-
- #define TAGS_EVENT ((ID_SPCTAGS<<16)|ID_EVENT)
-
- struct EvtEntry {
- struct Event *Event;
- LONG (*Routine)(void);
- };
-
- struct Event {
- struct Event *Next; /* [00] Next event node */
- struct Event *Prev; /* [04] Previous event node */
- __asm LONG (*Routine)(register __a0 APTR Reg1, register __d0 LONG Reg2);
- APTR Args; /* [12] Event arguments */
- WORD Priority; /* [16] Sets position in the event chain */
- WORD Number; /* [18] Event number */
- LONG Flags; /* [20] Special flags */
- struct DPTask *Task; /* [24] Task owner */
- };
-
- /* Event Structure Tags */
-
- #define EVA_Routine (TAPTR|8)
- #define EVA_Args (TAPTR|12)
- #define EVA_Priority (TWORD|16)
- #define EVA_Number (TWORD|18)
- #define EVA_Flags (TLONG|20)
-
- /* Event->Flags */
-
- #define EVF_ON 0x00000001 /* Call routine on event (default) */
- #define EVF_AFTER 0x00000002 /* Call routine after event */
- #define EVF_UNTRACKED 0x00000004 /* Do not track the event node */
- #define EVF_GLOBAL 0x00000008 /* Always call if event occurs (default) */
- #define EVF_TASK 0x00000010 /* Call if I am the active task */
-
- /* Return flags for Event->Routine() and CallEventList() */
-
- #define EVR_BREAK 0x00000001 /* Do not execute any more events */
- #define EVR_FAIL 0x00000002 /* Return immediately (failure) */
-
- /*****************************************************************************
- ** Available event types.
- */
-
- #define EVTNODE (0L)
- #define EVTCALL (0x80000000L)
-
- #define EVT_OnNewTask (1|EVTNODE) /* A new task is appearing */
- #define EVT_OnRemTask (2|EVTNODE) /* An existing task is being removed */
- #define EVT_ab (3|EVTNODE) /* */
- #define EVT_ac (4|EVTNODE) /* */
- #define EVT_ad (5|EVTNODE) /* Args: <TimesPerSecond> */
- #define EVT_ae (6|EVTNODE) /* Args: <Task> */
- #define EVT_af (7|EVTNODE) /* Args: <Task> */
- #define EVT_Timer (8|EVTCALL) /* Args: <MicroSeconds> */
- #define EVT_DiskInsert (9|EVTNODE) /* Args: <None> */
- #define EVT_DiskRemove (10|EVTNODE) /* Args: <None> */
- #define EVT_SelfDestruct (11|EVTNODE) /* Args: <Task> */
- #define EVT_OnDisplay (12|EVTNODE) /* Args: <Task> */
- #define EVT_Expunge (13|EVTNODE) /* Args: <None> */
- #define EVT_LowMemory (14|EVTNODE) /* Args: <PercentageLeft> */
- #define EVT_PlaySound (15|EVTCALL) /* Args: <Task/Object> */
-
- #define EVT_END 200 /* Maximum amount of events for this version */
-
- #endif /* SYSTEM_EVENTS_H */
-